package IT.DataAccess;
import IT.Entities.ClienteProspecto;
import java.util.List;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

public class DatClienteProspecto implements IDatClienteProspecto{
    
    private List<ClienteProspecto> oLista ;
    private ClienteProspecto oCliente;
    private BDConexion oBase;
    
    private Connection oConexion;
    private CallableStatement oCst;    
    private ResultSet oRst;    
    
    public List<ClienteProspecto> Listar(int nEmplado){
        
        oLista = new ArrayList<ClienteProspecto>();
         
        try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_ClienteProspectoListar(?)}");
            oCst.setInt(1, nEmplado);
            oRst = oCst.executeQuery();

            while (oRst.next()) {
                oLista.add(new ClienteProspecto(oRst.getInt("cod_pro_in"), 
                        oRst.getString("cli_pro_vc"), oRst.getString("con_pro_vc"), 
                        oRst.getString("cor_pro_vc"), oRst.getString("tel_pro_vc"),
                        oRst.getInt("lin_pro_in"), oRst.getString("Linea"), 
                        oRst.getInt("lle_pro_in"), oRst.getString("LLegada"), oRst.getString("des_pro_vc"),
                        oRst.getInt("cod_emp_in"), oRst.getString("Empleado"),
                        oRst.getInt("est_pro_in"),oRst.getString("Estado")));
            }
            oRst.close();
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatArea.class.getName()).log(Level.SEVERE, null, ex);
        }
         return oLista;
    }

    public ClienteProspecto Ind(int nCodigo) {
        oCliente = new ClienteProspecto();
         
        try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_ClienteProspectoInd(?)}");
            oCst.setInt(1, nCodigo);
            oRst = oCst.executeQuery();

            while (oRst.next()) {
                oCliente.setCod_pro_in(oRst.getInt("cod_pro_in"));
                oCliente.setCli_pro_vc(oRst.getString("cli_pro_vc"));
                oCliente.setCon_pro_vc(oRst.getString("con_pro_vc"));                
                oCliente.setCor_pro_vc(oRst.getString("cor_pro_vc"));
                oCliente.setTel_pro_vc(oRst.getString("tel_pro_vc"));
                oCliente.setLin_pro_in(oRst.getInt("lin_pro_in"));
                oCliente.setLinea(oRst.getString("Linea"));                
                oCliente.setLle_pro_in(oRst.getInt("lle_pro_in")); 
                oCliente.setLLegada(oRst.getString("LLegada"));
                oCliente.setDes_pro_vc(oRst.getString("des_pro_vc"));                
                oCliente.setCod_emp_in(oRst.getInt("cod_emp_in"));
                oCliente.setEmpleado(oRst.getString("Empleado"));
                oCliente.setEst_pro_in(oRst.getInt("est_pro_in"));
                oCliente.setEstado(oRst.getString("Estado"));
            }
            oRst.close();
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatArea.class.getName()).log(Level.SEVERE, null, ex);
        }
         return oCliente;
    }

    public int Insertar(ClienteProspecto ent) {
        int nCodigo=0;
        try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_ClienteProspectoInsertar(?,?,?, ?,?,?, ?,?,?)}");                         
            oCst.setString(1, ent.getCli_pro_vc());
            oCst.setString(2, ent.getCon_pro_vc());
            oCst.setString(3, ent.getCor_pro_vc());
            oCst.setString(4, ent.getTel_pro_vc());
            oCst.setInt(5, ent.getLin_pro_in());
            oCst.setInt(6, ent.getLle_pro_in());
            oCst.setString(7, ent.getDes_pro_vc());
            oCst.setInt(8, ent.getCod_emp_in());   
            oCst.registerOutParameter(9, java.sql.Types.INTEGER); 
            
            oCst.execute();        
            nCodigo=oCst.getInt(9);
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatClienteProspecto.class.getName()).log(Level.SEVERE, null, ex);
        }
        return nCodigo;
    }

    public void Editar(ClienteProspecto ent) {
         try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_ClienteProspectoEditar(?,?,?, ?,?,?, ?,?,?)}");                         
            oCst.setInt(1, ent.getCod_pro_in());
            oCst.setString(2, ent.getCli_pro_vc());
            oCst.setString(3, ent.getCon_pro_vc());
            oCst.setString(4, ent.getCor_pro_vc());
            oCst.setString(5, ent.getTel_pro_vc());
            oCst.setInt(6, ent.getLin_pro_in());
            oCst.setInt(7, ent.getLle_pro_in());
            oCst.setString(8, ent.getDes_pro_vc());
            oCst.setInt(9, ent.getCod_emp_in());      
            oCst.execute();        
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatArea.class.getName()).log(Level.SEVERE, null, ex);
        }      
    }

    public int Eliminar(int nCodigo) {
       int nResultado=0;
       
       try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_ClienteProspectoEliminar(?,?)}");                         
            oCst.setInt(1, nCodigo);
            oCst.registerOutParameter(2, java.sql.Types.INTEGER);  
            oCst.execute();
            nResultado=oCst.getInt(2);  
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatArea.class.getName()).log(Level.SEVERE, null, ex);
        }  
       
       return nResultado;
    }

    public int Valida(int nCodigo) {
       int nResultado=0;
       
       try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_ClienteProspectoValida(?,?)}");                         
            oCst.setInt(1, nCodigo);
            oCst.registerOutParameter(2, java.sql.Types.INTEGER);  
            oCst.execute();
            nResultado=oCst.getInt(2);  
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatArea.class.getName()).log(Level.SEVERE, null, ex);
        }  
       
       return nResultado;
    }

    public void Estado(int nCodigo, int nEstado) {
          try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_ClienteProspectoEstado(?,?)}");                         
            oCst.setInt(1, nCodigo);
            oCst.setInt(2, nEstado);            
            oCst.execute();        
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatArea.class.getName()).log(Level.SEVERE, null, ex);
        }      
    }

}
